﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace TorneoLoL
{
    public partial class FormJugadores : Form
    {
        

        public FormJugadores()
        {            
            InitializeComponent();
            this.Text = "Jugadores";
            this.FormBorderStyle = FormBorderStyle.None;
     
        }

        private void FormJugadores_Load(object sender, EventArgs e)
        {
            Conexion conexion = new Conexion();
            DataSet ds = new DataSet();
            String ConsultaSQL;

            ConsultaSQL = "select Jugadores.J_Nombre as[Nombre], Jugadores.J_Nick as[Nick], " +
                "Jugadores.J_Rol as[Rol], Teams.T_NombreTeam as[Nombre Team], " +
                "Jugadores.J_FechaN as[Fecha Nacimiento], Paises.P_Nombre as[País] " +
                "from Jugadores inner join Teams on Jugadores.J_IdTeam = Teams.T_IdTeam " +
                "inner join Paises on Jugadores.J_Pais = Paises.P_ID";
            conexion.consultarDataSet( ref ds, "Jugadores", ConsultaSQL );
            grdJugadores.DataSource = ds.Tables["Jugadores"];
            iniciarControles();
  

        }
        private void iniciarControles()
        {
            CargarComboNumerico(ref cmbCEnc);
            CargarComboNumerico(ref cmbIdJugador);
            CargarComboNumerico(ref cmbTeam);
            CargarComboTexto(ref cmbPais);
            CargarComboTexto(ref cmbRol);

            txtTEnc.Enabled = false;
            txtWin.Enabled = false;
            txtLose.Enabled = false;
            txtKills.Enabled = false;
            txtDeaths.Enabled = false;
            txtAsist.Enabled = false;
            txtCS.Enabled = false;
        }
        private void CargarComboTexto(ref ComboBox NombreCombo)
        {
            NombreCombo.Items.Add("");
            NombreCombo.Items.Add("Comienza con:");
            NombreCombo.Items.Add("Termina en:");
            NombreCombo.Items.Add("Contiene:");
            NombreCombo.Items.Add("Es igual a:");
        }
        private void CargarComboNumerico(ref ComboBox NombreCombo)
        {
            NombreCombo.Items.Add("");
            NombreCombo.Items.Add("Igual a:");
            NombreCombo.Items.Add("Mayor a:");
            NombreCombo.Items.Add("Menor a:");
        }

        private void grdJugadores_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            int row = grdJugadores.CurrentRow.Index;
            if (grdJugadores[0, row].Value.ToString() == string.Empty) return;

            Conexion conexion = new Conexion();
            DataSet ds = new DataSet();
            String ConsultaSQL;
           
            grdDXE.DataSource = null;
            
           // MessageBox.Show(grdJugadores[0, row].Value.ToString());
            ConsultaSQL = "select Jugadores.J_Nick as[Nick], " +
                "DesempeñoDeJugadorXEncuentro.DJ_IdPartida as[Código de Partida], Encuentros.E_NEncuentro as[Número de encuentro], " +
                "DesempeñoDeJugadorXEncuentro.DJ_Personaje as[Personaje], " +
                "DesempeñoDeJugadorXEncuentro.DJ_CS as[Creep Score], " +
                "DesempeñoDeJugadorXEncuentro.DJ_K as[Kills], DesempeñoDeJugadorXEncuentro.DJ_D as[Deaths], " +
                "DesempeñoDeJugadorXEncuentro.DJ_A as[Assists] from DesempeñoDeJugadorXEncuentro " +
                "inner join Jugadores on Jugadores.J_Id = DesempeñoDeJugadorXEncuentro.DJ_IdJugador " +
                "inner join Encuentros on Encuentros.E_IdEncuentro = DesempeñoDeJugadorXEncuentro.DJ_IdEncuentro " +
                "and Encuentros.E_IdPartida = DesempeñoDeJugadorXEncuentro.DJ_IdPartida " +
                "where Jugadores.J_Nick = '" + grdJugadores["Nick", row].Value.ToString() + "'";
            
            conexion.consultarDataSet(ref ds, "EncDeJug", ConsultaSQL);
            grdDXE.DataSource = ds.Tables["EncDeJug"];

            ConsultaSQL = "select * from Jugadores inner join Teams on Teams.T_IdTeam = Jugadores.J_IdTeam where J_Nick = '" + grdJugadores.CurrentRow.Cells["Nick"].Value.ToString() + "'";
            conexion.consultarDataSet( ref ds, "Players", ConsultaSQL );
         
            txtTEnc.Text = ds.Tables["Players"].Rows[0]["J_TotalEncuentros"].ToString();
            if(txtTEnc.Text != "0")
            {
                float PromedioWin = float.Parse( ds.Tables["Players"].Rows[0]["T_TotalEncuentrosW"].ToString() ) * 100 / float.Parse( txtTEnc.Text.ToString() );
                txtWin.Text = PromedioWin.ToString();

                float PromedioLose = float.Parse( ds.Tables["Players"].Rows[0]["T_TotalEncuentrosL"].ToString() ) * 100 / float.Parse( txtTEnc.Text.ToString() );
                txtLose.Text = PromedioLose.ToString();

                float PromedioKills = float.Parse( ds.Tables["Players"].Rows[0]["J_K"].ToString() ) / float.Parse( txtTEnc.Text.ToString() );
                txtKills.Text = PromedioKills.ToString();

                float PromedioDeaths = float.Parse( ds.Tables["Players"].Rows[0]["J_D"].ToString() ) / float.Parse( txtTEnc.Text.ToString() );
                txtDeaths.Text = PromedioDeaths.ToString();

                float PromedioAsist = float.Parse( ds.Tables["Players"].Rows[0]["J_A"].ToString() ) / float.Parse( txtTEnc.Text.ToString() );
                txtAsist.Text = PromedioAsist.ToString();

                float PromedioCS = float.Parse( ds.Tables["Players"].Rows[0]["J_CS"].ToString() ) / float.Parse( txtTEnc.Text.ToString() );
                txtCS.Text = PromedioCS.ToString();
            }
            else
            {
                txtWin.Text = String.Empty;
                txtLose.Text = String.Empty;
                txtKills.Text = String.Empty;
                txtDeaths.Text = String.Empty;
                txtAsist.Text = String.Empty;
                txtCS.Text = String.Empty;
            }

        }
        //------

        private void btnQuitarFiltro_Click(object sender, EventArgs e)
        {
            Conexion conexion = new Conexion();
            DataSet ds = new DataSet();
            String ConsultaSQL;

            grdJugadores.DataSource = null;

            ConsultaSQL = "select Jugadores.J_Nombre as[Nombre], Jugadores.J_Nick as[Nick], " +
                "Jugadores.J_Rol as[Rol], Teams.T_NombreTeam as[Nombre Team], " +
                "Jugadores.J_FechaN as[Fecha Nacimiento], Paises.P_Nombre as[País] " +
                "from Jugadores inner join Teams on Jugadores.J_IdTeam = Teams.T_IdTeam " +
                "inner join Paises on Jugadores.J_Pais = Paises.P_ID";
            conexion.consultarDataSet(ref ds, "Jugadores", ConsultaSQL);
            grdJugadores.DataSource = ds.Tables["Jugadores"];
        }

        private void btnFiltrar_Click(object sender, EventArgs e)
        {

            Conexion conexion = new Conexion();
            DataSet ds = new DataSet();
          

            grdJugadores.DataSource = null;

            String consulta = "select Jugadores.J_Nombre as[Nombre], Jugadores.J_Nick as[Nick], " +
                "Jugadores.J_Rol as[Rol], Teams.T_NombreTeam as[Nombre Team], " +
                "Jugadores.J_FechaN as[Fecha Nacimiento], Paises.P_Nombre as[País] " +
                "from Jugadores inner join Teams on Jugadores.J_IdTeam = Teams.T_IdTeam " +
                "inner join Paises on Jugadores.J_Pais = Paises.P_ID ";

            if (cmbIdJugador.Text != String.Empty && cmbIdJugador.FindString(cmbIdJugador.Text) != -1 && txtIdJugador.Text != String.Empty)
            {
                switch (cmbIdJugador.Text)
                {
                    case "Igual a:":
                        consulta += "where J_id = " + txtIdJugador.Text.ToString();
                        break;

                    case "Mayor a:":
                        consulta += "where J_id > " + txtIdJugador.Text.ToString();
                        break;

                    case "Menor a:":
                        consulta += "where J_id < " + txtIdJugador.Text.ToString();
                        break;
                }
            }
           
            
         
            if (cmbPais.Text != String.Empty && cmbPais.FindString(cmbPais.Text) != -1 && txtPais.Text != String.Empty)
            {
                if (consulta != "select Jugadores.J_Nombre as[Nombre], Jugadores.J_Nick as[Nick], " +
                "Jugadores.J_Rol as[Rol], Teams.T_NombreTeam as[Nombre Team], " +
                "Jugadores.J_FechaN as[Fecha Nacimiento], Paises.P_Nombre as[País] " +
                "from Jugadores inner join Teams on Jugadores.J_IdTeam = Teams.T_IdTeam " +
                "inner join Paises on Jugadores.J_Pais = Paises.P_ID ")
                    consulta += " and ";
                else
                    consulta += "where ";
                switch (cmbPais.Text)
                {
                    case "Comienza con:":
                        consulta += "Paises.P_Nombre like '" + txtPais.Text.ToString() + "%'";
                        break;

                    case "Termina en:":
                        consulta += "Paises.P_Nombre like '%" + txtPais.Text.ToString() + "'";
                        break;

                    case "Contiene:":
                        consulta += "Paises.P_Nombre like '%" + txtPais.Text.ToString() + "%'";
                        break;

                    case "Es igual a:":
                        consulta += "Paises.P_Nombre= '" + txtPais.Text.ToString() + "'";
                        break;
                }
            }

            if (cmbTeam.Text != String.Empty && cmbTeam.FindString(cmbTeam.Text) != -1 && txtNTeam.Text != String.Empty)
            {
               

                if(consulta != "select Jugadores.J_Nombre as[Nombre], Jugadores.J_Nick as[Nick], " +
                "Jugadores.J_Rol as[Rol], Teams.T_NombreTeam as[Nombre Team], " +
                "Jugadores.J_FechaN as[Fecha Nacimiento], Paises.P_Nombre as[País] " +
                "from Jugadores inner join Teams on Jugadores.J_IdTeam = Teams.T_IdTeam " +
                "inner join Paises on Jugadores.J_Pais = Paises.P_ID ")
                    consulta += " and ";
                else
                    consulta += "where ";
                switch(cmbTeam.Text)
                {
                    case "Igual a:":
                        consulta +=  "J_idTeam = " + txtNTeam.Text.ToString();
                        break;

                    case "Mayor a:":
                        consulta += "J_idTeam > " + txtNTeam.Text.ToString();
                        break;

                    case "Menor a:":
                        consulta += "J_idTeam < " + txtNTeam.Text.ToString();
                        break;
                }
            }


            if(cmbCEnc.Text != String.Empty && cmbCEnc.FindString( cmbCEnc.Text ) != -1 && txtCEnc.Text != String.Empty)
            {
                if(consulta != "select Jugadores.J_Nombre as[Nombre], Jugadores.J_Nick as[Nick], " +
                "Jugadores.J_Rol as[Rol], Teams.T_NombreTeam as[Nombre Team], " +
                "Jugadores.J_FechaN as[Fecha Nacimiento], Paises.P_Nombre as[País] " +
                "from Jugadores inner join Teams on Jugadores.J_IdTeam = Teams.T_IdTeam " +
                "inner join Paises on Jugadores.J_Pais = Paises.P_ID ")
                    consulta += " and ";
                else
                    consulta += "where ";
                switch (cmbCEnc.Text)
                {
                    case "Igual a:":
                        consulta += "J_TotalEncuentros = " + txtCEnc.Text.ToString();
                        break;

                    case "Mayor a:":
                        consulta += "J_TotalEncuentros > " + txtCEnc.Text.ToString();
                        break;

                    case "Menor a:":
                        consulta += "J_TotalEncuentros < " + txtCEnc.Text.ToString();
                        break;
                }
            }

          
            if(cmbRol.Text != String.Empty && cmbRol.FindString( cmbRol.Text ) != -1 && txtRol.Text != String.Empty)
            {
                if(consulta != "select Jugadores.J_Nombre as[Nombre], Jugadores.J_Nick as[Nick], " +
                "Jugadores.J_Rol as[Rol], Teams.T_NombreTeam as[Nombre Team], " +
                "Jugadores.J_FechaN as[Fecha Nacimiento], Paises.P_Nombre as[País] " +
                "from Jugadores inner join Teams on Jugadores.J_IdTeam = Teams.T_IdTeam " +
                "inner join Paises on Jugadores.J_Pais = Paises.P_ID ")
                    consulta += " and ";
                else
                    consulta += "where ";
                switch(cmbRol.Text)
                {
                    case "Comienza con:":
                        consulta += "J_Rol like '" + txtRol.Text.ToString() + "%'";
                        break;

                    case "Termina en:":
                        consulta += "J_Rol like '%" + txtRol.Text.ToString() + "'";
                        break;

                    case "Contiene:":
                        consulta += "J_Rol like '%" + txtRol.Text.ToString() + "%'";
                        break;

                    case "Es igual a:":
                        consulta += "J_Rol = '" + txtRol.Text.ToString() + "'";
                        break;
                }
            }

            conexion.consultarDataSet(ref ds, "Jugadores", consulta);
            grdJugadores.DataSource = ds.Tables["Jugadores"];
        }


        //-------

    }
}
